//package com.kungfuhacking.wristbandpro.chat.activity;
//
//import android.app.Dialog;
//import android.content.Context;
//import android.content.DialogInterface;
//import android.content.Intent;
//import android.graphics.Bitmap;
//import android.graphics.BitmapFactory;
//import android.media.MediaPlayer;
//import android.net.Uri;
//import android.os.Bundle;
//import android.support.v4.view.ViewPager;
//import android.text.Editable;
//import android.text.SpannableString;
//import android.text.TextUtils;
//import android.text.TextWatcher;
//import android.util.Log;
//import android.view.KeyEvent;
//import android.view.MotionEvent;
//import android.view.View;
//import android.view.ViewTreeObserver;
//import android.view.inputmethod.EditorInfo;
//import android.view.inputmethod.InputMethodManager;
//import android.widget.AbsListView;
//import android.widget.EditText;
//import android.widget.GridView;
//import android.widget.ImageView;
//import android.widget.LinearLayout;
//import android.widget.ListView;
//import android.widget.RelativeLayout;
//import android.widget.TextView;
//
//import com.alibaba.fastjson.JSON;
//import com.kungfuhacking.wristbandpro.R;
//import com.kungfuhacking.wristbandpro.audio.MediaRecordManager;
//import com.kungfuhacking.wristbandpro.audio.UPlayer;
//import com.kungfuhacking.wristbandpro.base.view.BaseActivity;
//import com.kungfuhacking.wristbandpro.chat.presenter.ChatAdapter;
//import com.kungfuhacking.wristbandpro.chat.presenter.IChatPresenter;
//import com.kungfuhacking.wristbandpro.chat.presenter.PhotoAdapter;
//import com.kungfuhacking.wristbandpro.chat.view.IChatView;
//import com.kungfuhacking.wristbandpro.custom.TitleBarView;
//import com.kungfuhacking.wristbandpro.mqtt.MqttConstant;
//import com.kungfuhacking.wristbandpro.mqtt.MqttManager;
//import com.kungfuhacking.wristbandpro.mqtt.bean.MessageBean;
//import com.kungfuhacking.wristbandpro.mqtt.bean.TopicBean;
//import com.kungfuhacking.wristbandpro.mqtt.bean.VideoBean;
//import com.kungfuhacking.wristbandpro.photoView.PhotoViewAttacher;
//import com.kungfuhacking.wristbandpro.utils.CommonUtils;
//import com.kungfuhacking.wristbandpro.utils.Constant;
//import com.kungfuhacking.wristbandpro.widget.ChatView;
//import com.kungfuhacking.wristbandpro.widget.RecorderTextView;
//
//import org.greenrobot.eventbus.EventBus;
//import org.greenrobot.eventbus.Subscribe;
//import org.greenrobot.eventbus.ThreadMode;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.concurrent.Executors;
//import java.util.concurrent.TimeUnit;
//
//import io.reactivex.Observable;
//import io.reactivex.android.schedulers.AndroidSchedulers;
//import io.reactivex.disposables.Disposable;
//import io.reactivex.functions.Function;
//
///**
// * 聊天详情页面
// * Created by Aaron on 17/5/18.
// */
//
//public class ChatActivity extends BaseActivity implements View.OnClickListener, IChatView {
//
//    private EditText et_sendmessage;
//    private MessageBean contact;
//    private ListView lv_contents;
//    private Dialog dialog;
//    private ImageView iv_voice;
//    private TextView tv_mind;
//    private ViewPager vp_emotion;
//    private RelativeLayout ll_root;
//    private ImageView iv_audio;
//    private ImageView iv_emotion;
//    private ImageView iv_add;
//    private GridView gv_photo;
//    private ImageView pv_pre;
//    private RelativeLayout rl_emo;
//    private ImageView iv_emo_middle;
//    private ImageView iv_emo_left;
//    private ImageView iv_emo_right;
//    private TextView tv_send;
//    private RecorderTextView tv_rcd;
//    private RelativeLayout rl_pre;
//    private boolean send = true;
//
//    private boolean isShowEmo;
//    private List<MessageBean> lists = new ArrayList<>();
//    private boolean isShowPhoto;//是否显示选择图片布局
//    private long speakTime;//开始录音时间
//    private long second;//录音的时长
//
//    private String TAG = getClass().getSimpleName();
//    private TitleBarView tbv;
//
//    private IChatPresenter iChatPresenter = new IChatPresenter(this);
//    private ChatAdapter chatAdapter;
//    private Disposable readTimeDisp;
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//
//        EventBus.getDefault().register(this);
//        setContentView(R.layout.activity_chat);
//
//        //contact 需要有 topic 字段, receiveName 字段, receivePic字段, chatType 单聊还是私聊
//        if (bundle != null)
//            contact = bundle.getParcelable("contact");
//
//        if (contact == null) {
//            finish();
//            return;
//        }
//
//        initWidget();
//        initAdapter();
//        setListener(); //设置监听
//        showRightSetting();//是否显示设置按钮
//        iChatPresenter.setContact(contact);
//        iChatPresenter.chatHistory();
//
//    }
//
//    private void initWidget() {
//
//        tbv = (TitleBarView) findViewById(R.id.tbv);
//        lv_contents = (ListView) findViewById(R.id.lv_contents);
//        iv_add = (ImageView) findViewById(R.id.iv_add);
//        iv_emotion = (ImageView) findViewById(R.id.iv_emotion);
//        et_sendmessage = (EditText) findViewById(R.id.et_sendmessage);
//        iv_audio = (ImageView) findViewById(R.id.iv_audio);
//        pv_pre = (ImageView) findViewById(R.id.pv_pre);
//        TextView tv_save = (TextView) findViewById(R.id.tv_save);
//        tv_rcd = (RecorderTextView) findViewById(R.id.tv_rcd);
//        ImageView iv_left = (ImageView) findViewById(R.id.iv_left);
//        LinearLayout ll_bottom_total = (LinearLayout) findViewById(R.id.ll_bottom_total);
//        tv_send = (TextView) findViewById(R.id.tv_send);
//        rl_emo = (RelativeLayout) findViewById(R.id.rl_emo);//表情布局
//        iv_emo_middle = (ImageView) findViewById(R.id.iv_emo_middle);
//        iv_emo_left = (ImageView) findViewById(R.id.iv_emo_left);
//        iv_emo_right = (ImageView) findViewById(R.id.iv_emo_right);
//        rl_pre = (RelativeLayout) findViewById(R.id.rl_pre);
//        ll_root = (RelativeLayout) findViewById(R.id.ll_root);
//        vp_emotion = (ViewPager) findViewById(R.id.vp_emotion);
//
//        if (contact != null)
//            tbv.setTitle(contact.receiveName);//设置聊天对象昵称
//
//        if (contact != null && contact.channelId.startsWith(MqttConstant.START_S)) { //系统聊天, 不显示设置 和 底部聊天框
//            tbv.setRightVisible(false);
//            ll_bottom_total.setVisibility(View.GONE);
//        }
//
//        iv_left.setOnClickListener(this);
//        iv_audio.setOnClickListener(this);
//        iv_emotion.setOnClickListener(this);
//        iv_add.setOnClickListener(this);
//        tv_send.setOnClickListener(this);
//
//        tv_save.setOnClickListener(this);
//        tbv.setOnRightClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//
//            }
//        });
//
//    }
//
//    private void showRightSetting() {
//        if (MqttConstant.topicMap == null)
//            MqttConstant.topicMap = (Map<String, TopicBean>) JSON.parse(sp.getString(MqttConstant.TOPIC_MAP, ""));
//
//        if (MqttConstant.topicMap == null || !MqttConstant.topicMap.containsKey(contact.channelId))
//            tbv.setRightVisible(false);
//    }
//
//    private void setListener() {
//
////        tv_rcd.setOnTouchListener(this);
//
//        //发送信息
//        et_sendmessage.setOnEditorActionListener(new TextView.OnEditorActionListener() {
//
//            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
//                if (actionId == EditorInfo.IME_ACTION_SEND ||
//                        (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
//                    return iChatPresenter.sendChatMessage();
//
//                return false;
//
//            }
//        });
//
//        ll_root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
//            @Override
//            public void onGlobalLayout() {
//
////                Log.e(TAG, "键盘的高度 : " + (ll_root.getRootView().getHeight() - ll_root.getHeight()));
////                Log.e(TAG, "3 分 之 1 的高度 : " + (CommonUtils.getScreenSize(ChatActivity.this)[1] / 3));
//                if (ll_root.getRootView().getHeight() - ll_root.getHeight() >= CommonUtils.getScreenSize(ChatActivity.this)[1] / 3) {
//                    //软键盘显示了
//                    lv_contents.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
//                    lv_contents.setSelection(lv_contents.getCount());
//                }
//            }
//        });
//
//        //表情viewpager滑动的监听
//        vp_emotion.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
//            @Override
//            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//            }
//
//            @Override
//            public void onPageSelected(int position) {
//                setPoint(position);
//            }
//
//            @Override
//            public void onPageScrollStateChanged(int state) {
//
//            }
//        });
//
//        et_sendmessage.addTextChangedListener(new TextWatcher() {
//            @Override
//            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//
//            }
//
//            @Override
//            public void onTextChanged(CharSequence s, int start, int before, int count) {
//
//            }
//
//            @Override
//            public void afterTextChanged(Editable s) {
//                Log.d(TAG, " ==== afterTextChanged === :" + s.toString());
//
//                if (TextUtils.isEmpty(s.toString())) {
//                    iv_add.setVisibility(View.VISIBLE);
//                    tv_send.setVisibility(View.GONE);
//                } else {
//                    iv_add.setVisibility(View.GONE);
//                    tv_send.setVisibility(View.VISIBLE);
//                }
//
//            }
//        });
//    }
//
//    private void initAdapter() {
//
//        gv_photo = (GridView) findViewById(R.id.gv_photo);
//        PhotoAdapter photoAdapter = new PhotoAdapter(this, iChatPresenter);
//        gv_photo.setAdapter(photoAdapter);
//
//        chatAdapter = new ChatAdapter(lists, this);
//        lv_contents.setAdapter(chatAdapter);
//    }
//
//    /**
//     * 是否取消语音发送, (只是用来改变界面效果, 不做最终决定权)
//     */
//    @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
//    public void onDataSynEvent(Integer event) {
//
//        switch (event) {
//
//            case RecorderTextView.ACTION_DOWN://手指按下 弹出dialog
//
//                //手指按下的时候  如果正在播放语音 则停止播放
//                if (chatAdapter != null)
//                    chatAdapter.stopPlayVideo();
//
//                showDiago();
//
//                speakTime = System.currentTimeMillis();//记录按下的时间 TODO
//                recordTime();//监听话筒分贝
//
//                break;
//
//            case RecorderTextView.ACTION_MOVE_SEND://手指按下,并滑动的时候调用
//                tv_mind.setText(getResources().getString(R.string.slide_up_cancle_send));
//                tv_mind.setBackgroundColor(getResources().getColor(R.color.transparent));
//                break;
//
//            case RecorderTextView.ACTION_MOVE_CANCLE://取消发送
//
//                tv_mind.setText(getResources().getString(R.string.release_cancle_send));
//                tv_mind.setBackgroundColor(getResources().getColor(R.color.red));
//
//                if (readTimeDisp!=null)
//                    readTimeDisp.dispose();
//
//                break;
//
//            case RecorderTextView.ACTION_UP://手指抬起,dialog消失
//
//                Log.d(TAG, "--------------手指松开 up--------------");
//                if (dialog != null && dialog.isShowing())
//                    dialog.dismiss();
//
//                if (readTimeDisp!=null)
//                    readTimeDisp.dispose();
//
//                break;
//
//            case RecorderTextView.ACTION_UP_SHORT_TIME://录音时间过短
//
////                Log.d(TAG, "--------------手指松开 时间太短 up--------------");
//                tv_mind.setText(getResources().getString(R.string.speak_short));
//                dismissDiago();
//
//                if (readTimeDisp!=null)
//                    readTimeDisp.dispose();
//
//                break;
//
//            case ChatView.LOAD_MORE_CHAT_HISTORY://获取更多的聊天记录
//
//                //查找更多聊天记录
//                //获取当前页面显示的条目
//                iChatPresenter.moreHistory(lists.size());
////                startIndex = lists.size();
////                mHandler.post(historyRunnable);
//                break;
//
//            case UPlayer.STOPPLAYING:
//                Log.d(TAG, "设置为未播放状态");
//                //改为停止播放状态
//                chatAdapter.setIsPlaying(false);
//                break;
//
//        }
//
//    }
//
//    private void dismissDiago() {
//        if (dialog != null && dialog.isShowing())
//            dialog.dismiss();
//    }
//
//
//    /**
//     * 发送语音
//     */
//    @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
//    public void onDataSynEvent(VideoBean vb) {
//        if (contact == null) {
//            showErr("好友信息异常");
//            return;
//        }
//
//        if (!vb.isCancle) {
//            if (send)
//                //发送录音文件
//                sendVideoRecord();
//            else
//                send = true;
//        }
//
//    }
//
//    /**
//     * 收到了消息
//     */
//    @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
//    public void onDataSynEvent(MessageBean msb) {
//        //如果收到topic不是该聊天的topic则不处理
//        if (msb == null || contact == null || !contact.channelId.equals(msb.channelId))
//            return;
//
//        if (MqttConstant.MQTTMESSAGENOTICE.equals(msb.messageType)) { //创建群, 增删群成员,修改群昵称
//            tbv.setTitle(msb.receiveName);//设置群昵称
//            updateChatList(msb); //更新界面
//            return;
//        }
//
//        switch (msb.operationStyle) {
//
//            case MqttConstant.RECEIVE_MESSAGE: //接受到了新消息
//
//                if (sp.getString(MqttConstant.USERID, "").equals(msb.sendId))
//                    //是自己发送的消息
//                    return;
//
//                updateChatList(msb);//更新界面
//
//                break;
//
//            case MqttConstant.DELETE_RECENT_HISTORY://删除聊天记录
//
//                if (lists != null && chatAdapter != null) {
//                    lists.clear();
//                    chatAdapter.notifyDataSetChanged();
//                }
//
//                break;
//
//            case MqttConstant.OFF_GROUP://退出群
//                finish();
//                break;
//
//        }
//    }
//
//    /**
//     * 添加表情
//     *
//     * @param emo
//     */
//    @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
//    public void onDataSynEvent(SpannableString emo) {
//
//        int selectionStart = et_sendmessage.getSelectionStart();// 获取光标的位置
//
//        if (MqttConstant.DELETEEMO.equals(emo.toString())) {
//
//            //删除表情
//            if (selectionStart > 0) {
//                String body = et_sendmessage.getText().toString();
//                if (!TextUtils.isEmpty(body)) {
//
//                    String tempStr = body.substring(0, selectionStart);//截取出0到光标选中的一段内容
//                    int i = tempStr.lastIndexOf("[");// 获取最后一个表情的位置
//                    if (i != -1) {
//
//                        CharSequence cs = tempStr.subSequence(i, selectionStart);//获取到 类似表情 格式的 字符串
//                        if (mapplication.getEmoMap().containsKey(cs)) //判断是否是一个表情
//                            et_sendmessage.getEditableText().delete(i, selectionStart);
//                    }
//
//                }
//            }
//
//        } else
//            //指定光标处插入表情
//            et_sendmessage.getEditableText().insert(selectionStart, emo);
//
//    }
//
//    //获取当前录音的时长
//    public void recordTime() {
//
//        //间隔取样时间 300毫秒
//        readTimeDisp = Observable.interval(0, 300, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread()).map(new Function<Long, String>() {
//            @Override
//            public String apply(Long aLong) throws Exception {
//
//                Log.d(TAG, " 当前线程 " + Thread.currentThread().getName());
//
//                if (MediaRecordManager.getInstance().mMediaRecorder == null) {
//                    readTimeDisp.isDisposed();
//                    return "2";
//                }
//
//                int maxAmplitude = MediaRecordManager.getInstance().mMediaRecorder.getMaxAmplitude();
//
//                //更新麦克风录音大小状态
//                updateVoiceStatus(maxAmplitude);
//
//                second = (System.currentTimeMillis() - speakTime) / 1000;//获取当前录音的时长
//
//                if (second >= 50) {//大于了50秒
//
//                    if (second >= 60) {// 大于60秒 停止录音 发送录音文件, popup消失
//
//                        MediaRecordManager.getInstance().stopRecordAndFile();
//
//                        sendVideoRecord();
//                        send = false;
//
//                        if (dialog != null && dialog.isShowing())
//                            dialog.dismiss();
//
//                        tv_rcd.setText(getResources().getString(R.string.press_speak));
//
//                    }
//
//                }
//
//                return "1";
//            }
//        }).subscribeOn(AndroidSchedulers.mainThread())
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe();
//        ;
//    }
//
//
//    /**
//     * 更新界面
//     *
//     * @param msb
//     */
//    private void updateChatList(MessageBean msb) {
//
//        if (contact != null && contact.channelId.equals(msb.channelId)) {
//
//            if (!CommonUtils.isGroupChat(contact.channelId))
//                tbv.setTitle(msb.sendName);//私聊的话设置对方的昵称, 防止对方改名
//
//            lists.add(msb);
//            chatAdapter.notifyDataSetChanged();
//
//            Log.d(TAG, " 是否需要滑动到最下面 : " + isScrollBottom());
//            if (isScrollBottom()) {//如果不在底部 则不滑动到底部
//                lv_contents.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
//                lv_contents.setSelection(lv_contents.getCount());
//            } else
//                lv_contents.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
//
//        }
//    }
//
//    /**
//     * 判断listview是要拉到最底部
//     *
//     * @return true 滑动到最底部, false无需滑动
//     */
//    private boolean isScrollBottom() {
////        Log.d(TAG, "childCount : " + lists.size() + ", lastPosition : " + lastPosition);
//        //如果下面有三个以下的消息条目,则滑动到底部,否则不动
//        return lists.size() - lv_contents.getLastVisiblePosition() <= 3;
//    }
//
//
//    /**
//     * 发送录音文件
//     */
//    private void sendVideoRecord() {
//
//        if (readTimeDisp != null)
//            readTimeDisp.isDisposed();
//
//        if (TextUtils.isEmpty(MediaRecordManager.getInstance().getMediaPath())) {
//            showErr("获取录音文件失败");
//            return;
//        }
//
//        if (!CommonUtils.isFriendOrGroupNum(sp, this, contact.channelId))//和对方不是好友,或者不是群成员,无法发送消息
//            return;
//
//        //获取到发送的mb
//        MessageBean mb = getSendMessageBean(MqttConstant.MQTTMESSAGEVOICE, MediaRecordManager.getInstance().getMediaPath(), Math.round(MediaPlayer.create(this,
//                Uri.parse(MediaRecordManager.getInstance().getMediaPath())).getDuration() / 1000));
//
//        try {
//            sendMsg(mb);//发送聊天消息
//        } catch (Exception e) {
//            e.printStackTrace();
//
//            if (MqttConstant.MQTTNOTCONNECT.equals(e.getMessage())) {
//                showErr("聊天服务器未连接");
//            }
//            showErr("发送失败");
//            return;
//        }
//
//        addChatItem(mb);
//
//    }
//
//    /**
//     * 获取mb
//     *
//     * @return mb (adapter里面的mb)
//     */
//    private MessageBean getSendMessageBean(String messageStyele, String content, double voiceLength) {
//
//        MessageBean mb = new MessageBean();
////        mb.chatType = currentChatType;//聊天类型 单聊 还是私聊
//
//        mb.channelId = contact.channelId;//聊天的topic
//        mb.receiveName = contact.receiveName;//聊天的名称, 单聊就为聊天对象的昵称, 群聊为群聊昵称
//        mb.receiveId = contact.receiveId;//聊天对象的id
//        mb.receivePic = contact.receivePic;//聊天对象的头像
//
//        mb.messageType = messageStyele;//消息类型
////        mb.content = bytes;//图片和音频的字节流
//        mb.content = content;//消息内容,文字为内容, 图片和音频为存储路径
//        mb.voiceLength = voiceLength;//录音时长
//
//        mb.sendId = sp.getString(MqttConstant.USERID, "");//发送者的id
//        mb.sendName = sp.getString(Constant.NICKNAME, "");//发送者的昵称
//        mb.sendPic = sp.getString(Constant.USER_IMG, "");//发送者的头像
//        mb.sendDate = System.currentTimeMillis();
//        return mb;
//    }
//
//    /**
//     * 发送聊天mb
//     *
//     * @param mb
//     */
//    private void sendMsg(final MessageBean mb) throws Exception {
//
//        if (mb.content.equals("1")) {
//
//            Runnable runnable = new Runnable() {
//                @Override
//                public void run() {
//                    try {
//                        mb.sendDate = mb.sendDate + 1;
//                        MqttManager.getInstance().setMessage(contact.channelId, mb);
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }
//            };
//
//            Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(runnable, 0, 100, TimeUnit.MILLISECONDS);
//
//        } else
//            MqttManager.getInstance().setMessage(contact.channelId, mb);
//    }
//
//    /**
//     * 更新麦克风音量变化
//     * <p/>
//     * 更新话筒状态 分贝是也就是相对响度 分贝的计算公式K=20lg(Vo/Vi) Vo当前振幅值 Vi基准值为600：
//     * 怎么制定基准值的呢？ 当20* Math.log10(mMediaRecorder.getMaxAmplitude() / Vi)==0的时候vi就是我所需要的基准值
//     * 当我不对着麦克风说任何话的时候，测试获得的mMediaRecorder.getMaxAmplitude()值即为基准值。
//     * Log.i("mic_", "麦克风的基准值：" + mMediaRecorder.getMaxAmplitude());前提时不对麦克风说任何话
//     *
//     * @param voice
//     */
//    private void updateVoiceStatus(int voice) {
//
//        int ratio = voice / 50;//Vi基准值50
//        int db = 0;// 分贝
//
//        if (ratio > 1)
//            db = (int) (20 * Math.log10(ratio));
//
////        Log.d(TAG, "分贝值：" + db + "     " + Math.log10(ratio));
//        switch (db / 9) {
//
//            case 0:
//                iv_voice.setImageResource(R.mipmap.ic_voice_1);
//                break;
//
//            case 1:
//                iv_voice.setImageResource(R.mipmap.ic_voice_2);
//                break;
//
//            case 2:
//                iv_voice.setImageResource(R.mipmap.ic_voice_3);
//                break;
//
//            case 3:
//                iv_voice.setImageResource(R.mipmap.ic_voice_4);
//                break;
//
//            case 4:
//                iv_voice.setImageResource(R.mipmap.ic_voice_5);
//                break;
//
//            case 5:
//                iv_voice.setImageResource(R.mipmap.ic_voice_6);
//                break;
//
//            case 6:
//                iv_voice.setImageResource(R.mipmap.ic_voice_7);
//                break;
//
//            default:
//                break;
//        }
//
//    }
//
//    /**
//     * 弹出语音框
//     */
//    private void showDiago() {
//
//        if (dialog == null) {
//
//            dialog = new Dialog(this, R.style.no_title);
//            dialog.setCancelable(false);
//            dialog.setCanceledOnTouchOutside(false);
//            dialog.show();
//            dialog.setContentView(R.layout.dialog_chat_speak);
//
//            dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
//                @Override
//                public void onDismiss(DialogInterface dialog) {
//                    tv_rcd.setText(getResources().getString(R.string.press_speak));
//                }
//            });
//
//            iv_voice = (ImageView) dialog.findViewById(R.id.iv_voice);
//            tv_mind = (TextView) dialog.findViewById(R.id.tv_mind);
//        } else {
//            dialog.show();
//        }
//    }
//
//
//    public void fush() {
//        lv_contents.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
//        chatAdapter.notifyDataSetChanged();
//    }
//
//    private String showingPhotoUrl;//正在详情的图url
//    private boolean isShowingPicDetail;
//    private Bitmap detailBitmap; //查看详情的bitmap
//    private PhotoViewAttacher mAttacher;
//
//    private void setPoint(int position) {
//
//        iv_emo_middle.setSelected(false);
//        iv_emo_left.setSelected(false);
//        iv_emo_right.setSelected(false);
//
//        switch (position) {
//
//            case 0:
//                iv_emo_left.setSelected(true);
//                break;
//            case 1:
//                iv_emo_middle.setSelected(true);
//                break;
//            case 2:
//                iv_emo_right.setSelected(true);
//                break;
//        }
//
//    }
//
//    /**
//     * 查看图片详情
//     */
//    public void showPicDetail(String photoUrl) {
//
//        this.showingPhotoUrl = photoUrl;
//        detailBitmap = BitmapFactory.decodeFile(photoUrl);
//        pv_pre.setImageBitmap(detailBitmap);
//        rl_pre.setVisibility(View.VISIBLE);
//        isShowingPicDetail = true;
//        mAttacher = new PhotoViewAttacher(pv_pre);
//
//    }
//
//    /**
//     * 隐藏详情图片
//     */
//    public void hintPicDetail() {
//
//        isShowingPicDetail = false;
//        rl_pre.setVisibility(View.GONE);
//        mAttacher = null;
//
//    }
//
//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//    }
//
//    @Override
//    public void onClick(View v) {
//
//        switch (v.getId()) {
//
//            case R.id.iv_audio://切换语音聊天模式
//
//                changeVoiceStyle();
//
//                break;
//
//        }
//    }
//
//    private boolean isTalk;//是否是语音状态
//
//
//    @Override
//    public boolean dispatchTouchEvent(MotionEvent ev) {
//
//        Log.d(TAG, " 手势 : " + ev.getAction() + "");
//
//        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
//
//            //获取到当前的焦点view
//            View v = getCurrentFocus();
//
//            //是否隐藏软键盘
//            if (isShouldHideInput(v, ev)) {
//                InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
//                if (imm != null) {
//                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
//                }
//            }
//
//            //是否隐藏表情viewpager 和 选择图片的布局
//            if (isShowEmo) {
//
//                if (isShouldHideEmo(ev, rl_emo)) {
//                    rl_emo.setVisibility(View.GONE);
//                    isShowEmo = false;
//
//                }
//            }
//
//            if (isShowPhoto) {
//                if (isShouldHideEmo(ev, gv_photo)) {
//                    gv_photo.setVisibility(View.GONE);
//                    isShowPhoto = false;
//                }
//            }
//
////            LogUtil.e("tag", " === chatactivity super.dispatchTouchEvent(ev) ====== 之前 ");
//
//            return super.dispatchTouchEvent(ev);
//        }
//
////        LogUtil.e("tag", " === chatactivity super.dispatchTouchEvent(ev) ====== 之后 ");
//
//        // 必不可少，否则所有的组件都不会有TouchEvent了
//        return getWindow().superDispatchTouchEvent(ev) || onTouchEvent(ev);
//
//    }
//
//
//    /**
//     * 是否要隐藏软键盘
//     *
//     * @param v
//     * @param event
//     * @return
//     */
//    private boolean isShouldHideInput(View v, MotionEvent event) {
//
//        if (v != null && (v instanceof EditText)) {
//
//            int[] leftTop = {0, 0};
//            //获取输入框当前的location位置
//            v.getLocationInWindow(leftTop);
//            int left = leftTop[0];
//            int top = leftTop[1];
//            int bottom = top + v.getHeight();
//            int right = left + v.getWidth();
//            return !(event.getX() > left && event.getX() < right
//                    && event.getY() > top && event.getY() < bottom);
//        }
//
//        return false;
//    }
//
//    /**
//     * 切换聊天模式
//     */
//    private void changeVoiceStyle() {
//
//        et_sendmessage.setVisibility(isTalk ? View.VISIBLE : View.GONE);
//        tv_rcd.setVisibility(isTalk ? View.GONE : View.VISIBLE);
//
//        //把图标变成键盘样式或者语音样式
//        iv_audio.setImageResource(isTalk ? R.mipmap.ic_voice : R.mipmap.ic_keybord);
//
//        if (isTalk) {
//            et_sendmessage.setFocusable(true);
//            et_sendmessage.requestFocus();
//            InputMethodManager inputManager =
//                    (InputMethodManager) et_sendmessage.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
//            inputManager.showSoftInput(et_sendmessage, 0);
//        }
//
//        isTalk = !isTalk;
//
//    }
//
//
//    @Override
//    public Context getMyContext() {
//        return this;
//    }
//
//    @Override
//    public void setChatInfo(List<MessageBean> historyByTopic, int startIndex) {
//
//        lists.addAll(0, historyByTopic);
//        chatAdapter.notifyDataSetChanged();
//        if (startIndex == 0) {
//            //第一次进入聊天页面时 查询聊天记录
//            lv_contents.setSelection(lv_contents.getCount());
//        } else { //向上翻页时,加载更多聊天记录
//            //更换滚动模式
//            lv_contents.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
//            lv_contents.setSelection(historyByTopic.size() - 1);
//            lv_contents.smoothScrollBy(100, 1000);
//        }
//
//    }
//
//    /**
//     * 发送item添加到页面上显示
//     *
//     * @param mb
//     */
//    public void addChatItem(MessageBean mb) {
//        if (lists != null)
//            lists.add(mb);
//        chatAdapter.notifyDataSetChanged();
//        lv_contents.setSelection(lv_contents.getCount());
//    }
//
//    @Override
//    public String getSendMessage() {
//        return et_sendmessage.getText().toString();
//    }
//
//    @Override
//    public void setSendTxt(String txt) {
//        et_sendmessage.setText(txt);
//    }
//
//    @Override
//    protected void onDestroy() {
//        super.onDestroy();
//        iChatPresenter.clearRequest();
//    }
//
//
//    /**
//     * 是否隐藏表情viewpager
//     *
//     * @param ev
//     * @return
//     */
//    private boolean isShouldHideEmo(MotionEvent ev, View v) {
//        //如果点击的是这三个位置,不做处理, 点击的是其他的部位,则要隐藏表情的viewpager
//        return !(isPointInView(iv_emotion, ev.getX(), ev.getY()) || isPointInView(iv_add, ev.getX(), ev.getY())
//                || isPointInView(v, ev.getX(), ev.getY()));
//    }
//
//    /**
//     * 判断x,y 坐标是否在view的控件上
//     *
//     * @param v 控件view
//     * @param x 点击的x轴 点
//     * @param y 点击的y轴 点
//     * @return true 在view内, false 不做view内
//     */
//    private boolean isPointInView(View v, float x, float y) {
//        //获取到iv_add控件在界面的位置
//        int[] xy = {0, 0};
//        v.getLocationInWindow(xy);
//
//        int left = xy[0];
//        int top = xy[1];
//        int bottom = top + v.getHeight();
//        int right = left + v.getWidth();
//
//        return x > left && x < right && y > top && y < bottom;
//    }
//
////    @Override
////    public boolean onTouch(View v, MotionEvent event) {
////
////        switch (event.getAction()) {
////
////            case MotionEvent.ACTION_DOWN:
////                Log.d(TAG, " ====  ACTION down ");
////                break;
////
////            case MotionEvent.ACTION_MOVE:
////                Log.d(TAG, "    ACTION   === move ");
////
////                break;
////
////            case MotionEvent.ACTION_UP:
////                Log.d(TAG, " ====  ACTUION up =======  ");
////
////                break;
////        }
////
////
////        return true;
////    }
//}
